/*

	苹果内购支付
	
	##########TODO必须要执行的逻辑#######
	1、重写或完善 ids 内购数据
	2、初始化支付环境【this.getChannels()】
	
	##############流程###############
	1、检测支付通道
	2、检测支付环境
	3、发起支付
	
	#############使用说明###########
	1-2 获取内购价格列表后执行环境初始化 	this.getChannels()
	3 用户选完支付金额后，发起支付			this.applyPay

*/

// 苹果内购对象
var iap = null;
export default {
	data() {
		return {
			/** 
			 * 内购价格ID列表
			 * 
			 * ['com.benben.xxx1','com.benben.xxx1024']
			 */
			ids: [],
		}
	},
	methods: {
		/** 1、检测支付通道 */
		getChannels() {
			// #ifdef APP-PLUS
			plus.payment.getChannels(res => {
				const channel = res.find(i => i.id === 'appleiap')
				iap = channel ? channel : null
				this.requestOrder()
			}, (e) => plus.nativeUI.alert("获取支付通道失败，请稍后重试。", () => {}, "提示"))
			// #endif
		},
		/** 2、检测支付环境 */
		requestOrder() {
			// uni.showLoading({ title: '检测支付环境...' })
			// #ifdef APP-PLUS
			iap.requestOrder(
				this.ids,
				res => {
					console.debug('环境检测通过')
					uni.hideLoading()
				},
				errormsg => {
					uni.hideLoading()
					plus.nativeUI.alert("获取应用内购项目失败，请稍后重试。", function(e) {}, "提示");
				}
			)
			// #endif
		},
		/** 
		 * @description 3、发起支付
		 * 
		 * @param {String} productId 价格ID。如：com.benben.xxx1
		 * @returns {Promise} 成功或失败
		 */
		applyPay(productId) {
			console.log(productId);
			return new Promise((resolve, reject) => {
				uni.requestPayment({
					provider: 'appleiap',
					orderInfo: productId,
					success: e => {
						console.log('支付成功', e, '-', e.transactionIdentifier);
						resolve(e)
					},
					fail: err => {
						uni.showModal({ content: "取消支付", showCancel: false })
						reject(err)
					},
					complete() {
						console.debug('支付结束')
					}
				})
			})
			// uni.requestPayment({
			// 	provider: 'appleiap',
			// 	orderInfo: { productid },
			// 	success: e => {
			// 		console.log('支付成功', e, '-', e.transactionIdentifier);
			// 		resolve(e)
			// 	},
			// 	fail: err => {
			// 		console.log(err);
			// 		uni.showModal({ content: "取消支付", showCancel: false })
			// 		reject(err)
			// 	},
			// 	complete(e) {
			// 		console.log(e);
			// 		console.debug('支付结束')
			// 	}
			// })
		},
	}
}
